﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using Flores.ProgramacionWCF.Datos;
using Flores.ProgramacionWCF.Entidades;
using System.Web.Script.Services;
using System.Web.Services;
using System.Messaging;

namespace Flores.ProgramacionWCF
{
    // NOTA: puede usar el comando "Rename" del menú "Refactorizar" para cambiar el nombre de clase "Service1" en el código, en svc y en el archivo de configuración.
    public class ProgramacionService : IProgramacion
    {
        ProgramacionDAO prg = new ProgramacionDAO();
        //public List<Programacion> ConsultarDestinos(string Origen, string Destino, string Fecha_Ini, string Fecha_Fin, int Boletos)
        //{
        //    return prg.BuscarProgramacion(Origen, Destino, Fecha_Ini, Fecha_Fin, Boletos).ToList();
        //}
        [WebMethod, ScriptMethod]
        public List<Programacion> ConsultarDestinos(string origen, string destino, DateTime fechainicial, DateTime fechafinal, int cantidad)
        {
           
           string rutaCola = @".\private$\pulsar";
           if (!MessageQueue.Exists(rutaCola))
               MessageQueue.Create(rutaCola);
                //MessageQueue cola = new MessageQueue(rutaCola);

            MessageQueue cola = new MessageQueue(rutaCola);
            int cant = cola.GetAllMessages().Count();
            for (int i = 0; i < cant; i++)
            {

                cola.Formatter = new XmlMessageFormatter(new Type[] { typeof(ReservaMsj) });
                Message mensaje = cola.Receive();
                ReservaMsj reservamsj = (ReservaMsj)mensaje.Body;
                ActualizarProgramacion(reservamsj.Idprogramacion, reservamsj.Dni, reservamsj.Cantidad);

            }

            return prg.BuscarProgramacion(origen, destino, fechainicial, fechafinal, cantidad).ToList();
        }

        [WebMethod, ScriptMethod]
        public string ActualizarProgramacion(string idProgramacion, string dni, int cantidad)
        {
            return prg.ActualizarProgramacion(idProgramacion, dni, cantidad);
        }
    }
}
